import WKT from 'ol/format/WKT';

//定义format
let format = new WKT()
//定义常量
const COLLECTION = 'GEOMETRYCOLLECTION'
const POLYGON = 'POLYGON'
const LINESTRING = 'LINESTRING'
/**
 * Features转换成WKT
 * @author TabTan
 * @data 2022年3月11日11:45:12
 * @param features
 * @returns 转换后的字符串
 */
export function featuresToWKTs(features) {
    //转换成的string字符串
    let formatString = format.writeFeatures(features)
    console.log(formatString)
    // 定义最终返回对象
    let resObj = {linestring:[],polygon:[]}
    if(formatString.startsWith(COLLECTION)){//如果是多个图形
        // 等会收集里面的对象
        let collections = []
        let removeprefix = formatString.substring(COLLECTION.length+1,formatString.length-1)//去掉最外层
        // 拆分开来
        let itemList = removeprefix.split('),')
        
        for(let i=0;i<itemList.length;i++){
            if(i==itemList.length-1){// 最后一个元素不用修改,直接插入
                if(isPolygon(itemList[i])){
                    resObj.polygon.push(itemList[i])
                }else if(isLinestring(itemList[i])){
                    resObj.linestring.push(itemList[i])
                }
            }else{//只要不是最后一个，就加少了的)
                if(isPolygon(itemList[i])){
                    resObj.polygon.push(itemList[i]+')')
                }else if(isLinestring(itemList[i])){
                    resObj.linestring.push(itemList[i]+')')
                }
            }
        }
        return resObj

    }
    //一个图形直接返回即可
    if(isPolygon(formatString)){
        resObj.polygon.push(formatString)
    }
    if(isLinestring(formatString)){
        resObj.linestring.push(formatString)
    }
    return resObj
}
/**
 * 是否是Polygon类型
 * @param {geometrystr} geo 
 * @returns Boolean
 */
function isPolygon(geo){
    return geo.startsWith(POLYGON)
}
/**
 * 是否是Linestring 类型
 * @param {geometrystr} geo 
 * @returns Boolean
 */
function isLinestring(geo){
    return geo.startsWith(LINESTRING)
}

